<?php
namespace Amis\dataviewer;

use Amis\Basics\AmisBasics;

class Property extends AmisBasics
{
    public string $type = 'property';

    /**
     * 外层 dom 的类名
     * @param string $className
     * @return $this
     */
    public function className(string $className)
    {
        $this->className = $className;
        return $this;
    }

    /**
     * 外层 dom 的样式
     * @param array $style
     * @return $this
     */
    public function style(array $style)
    {
        $this->style = $style;
        return $this;
    }

    /**
     * 属性名的样式
     * @param array $labelStyle
     * @return $this
     */
    public function labelStyle(array $labelStyle)
    {
        $this->labelStyle = $labelStyle;
        return $this;
    }

    /**
     * 属性值的样式
     * @param array $contentStyle
     * @return $this
     */
    public function contentStyle(array $contentStyle)
    {
        $this->contentStyle = $contentStyle;
        return $this;
    }

    /**
     * 每行几列
     * @param int $column
     * @return $this
     */
    public function column(int $column = 3)
    {
        $this->column = $column;
        return $this;
    }

    /**
     * 显示模式，目前只有 'table' 和 'simple'
     * @param bool $IsTable
     * @return $this
     */
    public function mode(bool $IsTable = true)
    {
        $this->mode = $IsTable ? 'table' : 'simple';
        return $this;
    }

    /**
     * 'simple' 模式下属性名和值之间的分隔符
     * @param string $separator
     * @return $this
     */
    public function separator(string $separator = ',')
    {
        $this->separator = $separator;
        return $this;
    }

    /**
     * items[].label    SchemaTpl        属性名
     * items[].content    SchemaTpl        属性值
     * items[].span    SchemaTpl        属性值跨几列
     * items[].visibleOn    表达式        显示表达式
     * items[].hiddenOn    表达式        隐藏表达式
     * @param \Amis\dataviewer\PropertyItems ...$separator
     * @return $this
     */
    public function items(PropertyItems ...$separator)
    {
        $this->set(__FUNCTION__,...$separator);
        return $this;
    }
}